package com.leesche.zcsp.node.web.dao;

import java.util.List;

import com.leesche.zcsp.node.web.model.SysUser;
import com.leesche.zcsp.node.web.model.SysUserCriteria;
import com.leesche.zcsp.node.web.service.impl.data.read.QuerySysUserCondition;
import com.leesche.zcsp.node.web.service.impl.data.read.SysUserDto;

public interface SysUserDao
        extends
        BaseDao<SysUser, SysUserCriteria, SysUserDto, QuerySysUserCondition, Long> {
    /**
     * @param @param  condition
     * @param @return
     * @return SysUser
     * @throws
     * @Title: selectSysUserByUsernameAndPassword
     * @Description: TODO(通过用户名和密码查询用户)
     */
        /*public  SysUser selectSysUserByUsernameAndPassword(QuerySysUserCondition condition);*/
    SysUser selectSysUserByUsernameAndPassword1(QuerySysUserCondition condition);


    /**
     * @param condition
     * @return 用户信息
     * @Title: selectSysUserByUsername
     * @Description: TODO(根据用户名或邮箱或移动电话获取用户信息)
     * @author Jerry Chen
     * @date 2016年10月9日 下午5:57:50
     */
    SysUser selectSysUserByUsername(SysUser sysUser);

    /**
     * @param sysUsers 用户集合
     * @return 操作结果
     * @Title: insertBatch
     * @Description: TODO(批量添加用户)
     * @author Jerry Chen
     * @date 2016年10月5日 上午1:09:21
     */
    int insertBatch(List<SysUser> sysUsers);

    /**
     * @param sysUser 用户信息
     * @return 数据库操作结果
     * @Title: updateUserPasswordByUserID
     * @Description: TODO(根据用户ID修改用户密码)
     * @author Jerry Chen
     * @date 2016年10月8日 上午10:44:54
     */
    int updateUserPasswordByUserID(SysUser sysUser);

    /**
     * @param sysUser 用户信息
     * @return 数据库操作结果
     * @Title: updateUserTransferPasswordByUserID
     * @Description: TODO(根据用户ID修改用户支付密码)
     * @author Jerry Chen
     * @date 2016年10月8日 上午10:45:33
     */
    int updateUserTransferPasswordByUserID(SysUser sysUser);

    /**
     * @param sysUser 　父级用户信息
     * @return 子用户信息集合
     * @Title: selectByParentUserID
     * @Description: TODO(跟父级ID获取用户信息)
     * @author Jerry Chen
     * @date 2016年10月9日 上午11:26:54
     */
    List<SysUser> selectByParentUserID(SysUser sysUser);

    /**
     * @param parentUserID 父级ID
     * @return 子用户集合中的的最后一条数据
     * @Title: selectLastChildUserByParentUserid
     * @Description: TODO(根据父级ID获取所有子用户的最后一条数据)
     * @author Jerry Chen
     * @date 2016年10月11日 下午5:06:49
     */
    SysUser selectLastChildUserByParentUserid(Long parentUserID);

    /**
     * @param condition 用户信息查询条件
     * @return
     * @Title: selectChildUserByParentIDAndRoleID
     * @Description: TODO(根据父级ID和角色ID查询子账户信息)
     * @author Jerry
     * @date 2016-10-20 01:12:04
     */
    List<SysUserDto> selectChildUserByParentIDAndRoleID(QuerySysUserCondition condition);

    /** 
     * @Title: selectUserShortCode(QuerySysUserCondition condition)
     * @Description: TODO( 根据查询条件获取用户信息 )
     * @author Jerry Chan
     * @date 2016/11/27 14:58
     * @return 用户信息
     */
    Integer countUserByCondition(QuerySysUserCondition condition);
}